import ApiClient from '@/api/apiClient';

import type { RequestBody } from 'alova';

/**
 * SysCameraInfo对象
 */
export interface SysCameraInfo {
  /**
   * 通道数只有NVR有通道数参数，IPcamera没有通道数这个参数
   */
  aisleCount?: number;
  /**
   * code 同产品唯一
   */
  code?: string;
  /**
   * 创建人
   */
  createBy?: string;
  /**
   * 创建人id
   */
  createId?: number;
  /**
   * 创建时间
   */
  createTime?: string;
  /**
   * 所属设备分组id
   */
  groupId?: number;
  /**
   * 主键
   */
  id?: number;
  /**
   * 是否逻辑删除，0否,其他是
   */
  isDelete?: number;
  /**
   * 最近拉流时间
   */
  lastPullFlowTime?: string;
  /**
   * 摄像头名称
   */
  name?: string;
  /**
   * 拉流地址
   */
  pullFlowUrl?: string;
  /**
   * 设备状态 0:未激活 1:在线 2:离线 3:未知
   */
  status?: number;
  /**
   * 租户编码
   */
  tenantCode?: string;
  /**
   * 摄像头类型0: IPcamera 1：NVR 默认0
   */
  type?: number;
  /**
   * 修改人
   */
  updateBy?: string;
  /**
   * 修改人id
   */
  updateId?: number;
  /**
   * 更新时间
   */
  updateTime?: string;
  /**
   * 乐观锁版本号
   */
  version?: number;
  [property: string]: any;
}

/** 监控列表 */
export const VideoMonitorListApi = (data: RequestBody) => {
  return ApiClient.Post<API.ListType<SysCameraInfo>>('/manager/cameraInfo/page', data, {
    meta: { auth: true },
  });
};

/** 删除监控 */
export const VideoMonitorDeleteApi = (data: Merge<RequestBody, { id: string }>) => {
  return ApiClient.Post(`/manager/cameraInfo/remove/${data.id}`, data, {
    meta: { auth: true },
  });
};

/** 批量删除 */
export const VideoMonitorBatchDeleteApi = (data: string[]) => {
  return ApiClient.Post(`/manager/cameraInfo/batchRemoveById`, data, {
    meta: { auth: true },
  });
};

/** 获取监控视图侧边树 */
export const VideoMonitorTreeApi = (data: RequestBody) => {
  return ApiClient.Post(`/manager/cameraInfo/groupTree`, data, {
    meta: { auth: true },
  });
};

/** 获取视频详情 */
export const VideoMonitorDetailApi = (data: { id: number }) => {
  return ApiClient.Get<SysCameraInfo>(`/manager/cameraInfo/get/${data.id}`, {
    meta: { auth: true },
  });
};

/** 更新最新拉流时间*/
export const VideoMonitorLastPullApi = (data: { id: number }) => {
  return ApiClient.Get<SysCameraInfo>(`/manager/cameraInfo/get/${data.id}`, {
    meta: { auth: true },
  });
};

/** 导入设备位置 */
export const VideoMonitorImport = (data: RequestBody) => {
  return ApiClient.Post(`/manager/cameraInfo/importCamera`, data, {
    meta: { auth: true },
  });
};
